package com.ruoyi.yf.service;

import com.ruoyi.yf.domain.Report;
import com.ruoyi.yf.domain.YfDistrictStatistical;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IReportservice {

    /**
     * 统计 年、月、日、周 产量 袋
     * @return
     * @author XiaoYi...
     * @date 2020/6/4 15:55
     */
    public Report previewMain(Long deptId);

    //报表 月感控表
    public List<Report> reportYGK(Report report);

    //报表 月明细表
    List<Report> reportYMX(Report report);

    //报表 胎盘统计表
    List<Report> reportTP(Report report);

    //危险废物转移联单
    List<Report> reportWXFWZY(Report report);

    //卫生员接收医废
    List<Report> reportWSYJS(Report report);

    //sql查询报表
    List<Report> report_select_sql(String sql);


    /**
     * 统计报表
     *
     * @param disId
     * @param begindate
     * @param enddate
     * @return
     */
    List<Report> cityStatistical(Long disId, String begindate, String enddate);

    /**
     * 查询医废统计列表
     *
     * @param disId
     * @param startDate
     * @param endDate
     * @return
     */
    List<Report> cityTrashTypeAll(Long disId, String startDate, String endDate);


    /**
     * 医废类型统计
     *
     * @param deptId
     * @param begindate
     * @param enddate
     * @return
     */
    List<Report> trashType(Long deptId, String begindate, String enddate);

    /**
     * 条形统计图 存积量 预警值
     *
     * @param disId
     * @return
     */
    List<Report> storage_bar(String disId,int limit);

    /**
     * @param deptId
     * @return
     * @author XiaoYi...
     * 累计科室医废 产量、暂存量
     * @date 2020/5/8 14:36
     */
    List<Report> dept_trash_sum_staging(Long deptId);

    /**
     * @param deptId
     * @return
     * @author XiaoYi...
     * 累计医废类型 产量、暂存量
     * @date 2020/5/8 14:36
     */
    List<Report> trash_type_sum_staging(Long deptId);

    /**
     * @param deptId
     * @return
     * @author XiaoYi...
     * 当天科室医废 产量、暂存量
     * @date 2020/5/8 14:37
     */
    List<Report> now_day_dept_trash_sum_staging(Long deptId);

    /**
     * @param deptId
     * @return
     * @author XiaoYi...
     * 当天医废类型 产量、暂存量
     * @date 2020/5/8 14:36
     */
    List<Report> now_day_trash_type_sum_staging(Long deptId);


    /**
     * @param deptId 医院id
     *               累计、日、待入库数量统计
     * @return
     * @author XiaoYi...
     * @date 2020/5/11 11:35
     */
    Report bagandweight(@Param("deptId") Long deptId);


    /**
     * @param deptId 医院id
     *               收集员周统计产量
     * @return
     * @author XiaoYi...
     * @date 2020/5/12 10:28
     */
    List<Report> gathering_week_of_statistics(@Param("deptId") Long deptId);

    /**
     * 获取当日医废类型 统计
     * @author XiaoYi...
     * @param deptId
     * @date 2020/6/5 10:26
     * @return
     */
    Report brashTypeNowSumStatistical(Long deptId);

    /**
     *  积存量变化趋势图
     * @param deptId
     * @return
     */
    List<Report> storage_axis(Long deptId);


    /**
     *  获取今年医废总产量、总袋数
     * @param deptId
     * @return
     */
    Report getYearYFTotalWeightAndBags(Long deptId);



    /**
     *  条形统计图 医疗机构数量
     */
    List<Report> hospitalNumBarList(String disId,String hospitalTypeIds, int limit);


    /**
     *  医院医废总产量统计排行
     */
    List<Report> hospitalYFStatisticsList(Long deptId);


    /**
     *  大屏 -- 医废种类饼状图
     */
    List<Report> trashTypeStatistics(Long deptId);


    /**
     *  区县级卫健局 显示医院数量、暂存点数量
     */
    Report CountyHospitalNumBarList(String disId);


    /**
     *  区县级卫健局 显示区县级卫健局下属医院、社区 -- 积存量、预警值
     */
    List<Report> countyStorageBar(String disId, int limit2);

    /**
     * 获取医院总量 及位置
     * @param deptId
     * @return
     */
    List<Report> getHospitalWeightBagPoint(Long deptId);

    /**
     * 区县级卫健局 -- 显示区县级卫健局下辖医院  -- 产生量、转运量、暂存量
     */
    List<Report> countyStatistical(Long disId, String begindate, String enddate);

    /**
     * 区县级卫健局 -- 显示区县级卫健局下辖医院  -- 各医废类型
     */
    List<Report> countyTrashTypeAll(Long disId, String startDate, String endDate);

    List<Report> selectTagUpdateDescLimit(Long deptId, int limit);

    // 定时查询某天的医废统计
    List<YfDistrictStatistical> getDistrictYFStatistical(Long districtId, String date);


    // 历史积存量趋查询（近一周）
    List<Report> storageHistoryAxisListByLatestWeek(Long countyId,String flag, Long districtId);

    // 历史积存量趋查询（按月查询：yyyy-MM ）
    List<Report> storageHistoryAxisListByYearMonth(Long countyId,String flag, Long aLong, String startDay, String endDay);

    // 历史积存量趋查询（按年查询：yyyy）
    List<Report> storageHistoryAxisListByYear(Long countyId,String flag, Long aLong, String startDay, String endDay);

    // 省市区县医废向下钻取 -- 按医疗机构统计医废
    List<Report> getStatisticalWithHospital(Long deptId, String startDate, String endDate);

    // 省市区县医废向下钻取 -- 医疗机构下辖机构
    List<Report> getHospitalManagerHospital(Long deptId, String startDate, String endDate);

    //根据公司部门id查出所管理的医院部门id
    public Report previewComponyMain(Long componyId);
}
